home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / stuffit.arc / DUMFILE.ASM < prev    next >
Assembly Source File  |  1985-11-18  |  3KB  |  129 lines

  1. ;DUMFILE.ASM
  2. ;
  3. ;6.12.85
  4.  
  5. comment *
  6.  
  7.         Create dummy file to force fill space
  8.  
  9. On entry:
  10.  
  11.     DX    offset to dummy file ASCIIZ string:
  12.           dumfdef  db  'gobbige.zzz',0   ;default dummy file name
  13.  
  14. Uses:
  15.         Variables used by this segment, should be in prior segments:
  16.  
  17. bpc     dw      4096                    ;bytes per cluster
  18. handle  dw      0                       ;temp space to save handle
  19. clneed  dw      ?
  20. clmake  dw      ?
  21. ================
  22.  
  23.         Variables created in this program segment
  24. *
  25.  
  26. ;----------------------------------------------------------
  27. ;        constants and messages
  28.  
  29. hi          db      'Ta-da.'
  30. hilen       equ     $-hi
  31. bye         db      'Finis.'
  32. byelen      equ     $-bye
  33. dumfile_msg    db    cr,lf,'dumfile: ',eos
  34.  
  35.  
  36. ;----------------------------------------------------------
  37. ;        data storage
  38.  
  39. hisiz2  dw      0
  40. losiz2  dw      0
  41. makelen dw      0
  42.  
  43. ;----------------------------------------------------------
  44. ;        main code section
  45.  
  46. DUMFILE        proc    near
  47.  
  48.             mov     ax,clmake    ;check number clusters requested
  49.             cmp     ax,0
  50.             jne    oktomake
  51.             jmp     no_make_exit    ;don't need to make it--zero length
  52. oktomake:
  53.         push    dx        ;save address of dummy file name 
  54.             mul     bpc        ;multiply by bytes per cluster
  55.             mov     hisiz2,dx    ;required size in bytes for..
  56.             mov     losiz2,ax    ;..pointer move below
  57.  
  58.         pop    dx        ;restore dummy file name
  59.             mov    cx,20H        ;normal attribute
  60.         mov    ah,3CH        ;create a file call
  61.         int     21H
  62.         mov    bx,ax        ;file handle to BX
  63.         jnc    df2
  64.         push    ax        ;save error code
  65.         jmp    dumf_err2        ;skip close file part
  66.  
  67. ;----write something here just for practice
  68.                     ;BX has file handle
  69. df2:            mov     cx,hilen
  70.             mov     dx,offset hi
  71.             mov     ah,40H        ;write to file/dev function call
  72.             int     21H
  73.         jc    dumf_err
  74.  
  75. ;----move file ptr to end of file
  76.                     ;BX has file handle
  77.         mov     cx,hisiz2        ;most sig part of byte count
  78.             mov     dx,losiz2    ;least sig part of byte count
  79.             mov     al,0        ;to CX:DX offset from beginning of file
  80.             mov     ah,42H        ;LSEEK call
  81.             int     21H
  82.         jc    dumf_err        
  83.  
  84. ;----move back to allow trailer write
  85.                     ;BX has file handle
  86.             mov     ax,byelen    ;move pointer back bylen bytes
  87.             neg     ax
  88.             cwd            ;AX has least, DX has most sig
  89.             mov     cx,dx
  90.             mov     dx,ax
  91.             mov     al,1                    ;move current location plus offset
  92.             mov     ah,42H                  ;Move pointer call (LSEEK)
  93.             int     21H
  94.         jc    dumf_err
  95.  
  96. ;----write trailer
  97.                     ;BX has file handle
  98.             mov     cx,byelen
  99.             mov     dx,offset bye
  100.             mov     ah,40H
  101.             int     21H
  102.         jc    dumf_err
  103.  
  104. ;----close file
  105.                     ;BX has file handle
  106.             mov     ah,3EH        ;close handle call
  107.             int     21H             
  108.         jnc    dumf99
  109.         push    ax        ;save error code
  110.         jmp    dumf_err2
  111. no_make_exit:
  112. dumf99:
  113.             ret
  114.  
  115. dumf_err:        
  116.         push    ax        ;save error code
  117.                     ;BX has file handle
  118.         mov    ah,3eh        ;close file handle function call
  119.         int    21h        ;ignore error ret, if any
  120. dumf_err2:    mov    dx,offset dumfile_msg
  121.         mov    ah,9h
  122.         int    21h
  123.         pop    ax
  124.         call    errmsg
  125.         stc
  126.         ret
  127.  
  128. dumfile        endp
  129.